package com.zhiwen.test;

/**
 * @Auther: wuzhiwen
 * @Date: 2018/11/14 13:26
 * @Description:
 */
public class  Selection {

    public static void main(String[] args) {
        
        int[] arraySort = {8,3,4,5,6,7,1,2,0,9};
//        selectsort(arraySort);
        selectsort2(arraySort);
        for (int j : arraySort) {
            System.out.print(j + ",");
        }
    }

    /**
     * 虽然是完成了排序，但是效率以及简洁性都是很差的
     * 不得不承认自己的思维很是有些复杂了，或者说是简单了
     * @param array
     */
    public static void selectsort(int[] array) {
        for (int i = 0; i < array.length; i++) {
            int temp = array[i];
            int index = -1;
            for ( int i1 = i; i1 < array.length; i1++) {
                if (temp > array[i1]) {
                    temp = array[i1];
                    index = i1;
                }
            }
            if (index != -1) {
                array[index] = array[i];
                array[i] = temp;
            }
        }
    }

    /**
     * 优化代码实现
     * @param array
     */
    public static void selectsort2(int[] array) {

        int temp;
        //这里减一，最后一个不用再比较了
        for (int i = 0; i < array.length - 1; i++) {
            int minIndex = i;
            //不需要跟自己比较了
            for(int j = i+1 ;j <array.length; j++){
                if(array[j] < array[minIndex]){
                    minIndex = j;
                }
            }
            temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
        }
    }

}
